package basicJava.generics.generics1;
/*
 * 有些时候我们确实希望容器能够同时持有多种类型的对象。
 * 但是，通常，我们只会使用容器存储一种类型的对象
 * 泛型的主要目的之一，就是用来制定容器要持有什么类型的对象
 * 
 * java泛型的核心概念，就是，告诉编译器想要使用什么类型，然后编译器帮你处理一切细节
 */
public class Holder3<T> {
	private T a;
	public Holder3(T a){
		this.a = a;
	}
	
	public T getA() {
		return a;
	}

	public void setA(T a) {
		this.a = a;
	}

	public static void main(String[] args) {
		Holder3<Automobile> h3 = new Holder3<Automobile>(new Automobile());
		
		//并不需要强制类型转换
		Automobile a = h3.getA();
		//因为已经指定了类型，所以下面会出错，只能存放指定的类型
		//或者它的子类，因为多态和泛型并不冲突
//		h3.setA("Not a Automobile");
		
	}

}
